#include <vector>
#include <memory>

#ifndef __EOBJECT__
#define __EOBJECT__

#include "Constant.hpp"

class EObject
{
protected:
    static int cnt;
    int id;

public:
    EObject() {}
    virtual ~EObject() {}
    int getid() const;
    virtual void draw() = 0;
    virtual void update() = 0;
    virtual void lateupdate() = 0;
    virtual int getscore() = 0;
};
extern std::vector<std::shared_ptr<EObject>> ObjList;
#endif